<?php

namespace app\common\controller;

use think\Controller;



//公共控制器
class Home extends Controller
{   
     //过滤掉一些不需要登录也能访问的界面
     protected $NoLogin = [];

    public function __construct()
    {
        //继承底层控制器
        parent::__construct();
        
        //模型加载
        $this->BusinessModel = model('Business.Business');
        $this -> RegionModel = model('Region');
        //如何获取当前所访问的控制器方法
        $action = $this->request->action();
        
        // 判断$action是否存在于$this->NoLogin的数组中，若存在返回true，否则返回false
        // in_array($action,$this->NoLogin); 
        
        //如果有*号 则说明所有的方法都不需要登录

        if(!in_array($action,$this->NoLogin)&&!in_array('*',$this->NoLogin))
        {
            $this->isLogin();
        }

    } 
    /**
     * 判断是否登录
     * @param $redirect 重定向参数 true为默认跳转 false为不跳转
     * @return array 如果 redirect 为 false的时候，就返回登录信息 
     */
    public function isLogin($redirect = true, $url='')
    {
        //获取cookie
        $busid = cookie('busid') ? cookie('busid') :0;
        $mobile = cookie('mobile') ? cookie('mobile') : '';

        // $this->request:返回到当前界面
        // $url = empty($url) ? $this->request->url() : $url;

        //返回上一个界面
        $url = empty($url) ? $this->request->server('HTTP_REFERER') : $url;
        cookie('redirect',$url);

        if(!$busid || empty($mobile))
        {
            cookie('busid',NULL);
            cookie('mobile',NULL);
            if($redirect)
            {
                $this->error('请先登录',url('home/index/login'));
                exit;
            }else
            {
                return null;
            }
        }
        
        //根据id和手机号 查找具体的用户是否存在
        $where = ['id'=>$busid,'mobile'=>$mobile];
        $AutoLogin = $this->BusinessModel->where($where)->find();

        if(!$AutoLogin)
        {
            //若找不到对应的用户，则有可能cookie是伪造的
            cookie('busid',null);
            cookie('mobile',null);
            if($redirect)
            {
                $this->error('非法登录!',url('home/index/login.html'));
                exit;
            }else
            {
                return null;
            }
        }

        //将数据赋值到模板上
        $this->view->assign('AutoLogin',$AutoLogin);
        return $AutoLogin; 
    }
} 
